﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;

namespace RMS.Utils.DatabaseSchema
{
    class ConvertHelper
    {
        private static readonly Dictionary<SqlDbType, Type> Map = new Dictionary<SqlDbType, Type>();
        static ConvertHelper()
        {
            Map.Add(SqlDbType.BigInt, typeof(long));
            Map.Add(SqlDbType.Binary, typeof(byte[]));
            Map.Add(SqlDbType.Bit, typeof(bool));
            Map.Add(SqlDbType.Char, typeof(string));
            Map.Add(SqlDbType.Date, typeof(DateTime));
            Map.Add(SqlDbType.DateTime, typeof(DateTime));
            Map.Add(SqlDbType.Decimal, typeof(decimal));
            Map.Add(SqlDbType.Float, typeof(double));
            Map.Add(SqlDbType.Image, typeof(byte[]));
            Map.Add(SqlDbType.Int, typeof(int));
            Map.Add(SqlDbType.Money, typeof(decimal));
            Map.Add(SqlDbType.NChar, typeof(string));
            Map.Add(SqlDbType.NText, typeof(string));
            Map.Add(SqlDbType.NVarChar, typeof(string));
            Map.Add(SqlDbType.Real, typeof(float));
            Map.Add(SqlDbType.SmallDateTime, typeof(DateTime));
            Map.Add(SqlDbType.SmallInt, typeof(short));
            Map.Add(SqlDbType.SmallMoney, typeof(decimal));
            Map.Add(SqlDbType.Text, typeof(string));
            Map.Add(SqlDbType.Time, typeof(TimeSpan));
            Map.Add(SqlDbType.Timestamp, typeof(byte[]));
            Map.Add(SqlDbType.TinyInt, typeof(byte));
            Map.Add(SqlDbType.UniqueIdentifier, typeof(Guid));
            Map.Add(SqlDbType.VarBinary, typeof(byte[]));
            Map.Add(SqlDbType.VarChar, typeof(string));
            Map.Add(SqlDbType.Xml, typeof(string));
        }
        public static Type DbTypeToType(SqlDbType dbType)
        {
            try
            {
                return Map[dbType];
            }
            catch (Exception)
            {
                return typeof(object);
            }
        }
    }
}
